package org.wdcode.base.dao.spring.ibatis;

import java.util.List;

import org.wdcode.base.bean.PageBean;
import org.wdcode.core.dao.spring.ibatis.BasicIBatisDao;
import org.wdcode.common.tools.Conversion;

/**
 * IBatis的基础Dao抽象类，封装了IBatisDao和一些公用方法
 * @author WD
 * @since JDK6
 * @version 1.0 2009-08-31
 */
public abstract class BaseIBatisDao {
	// IBatisDao
	private BasicIBatisDao	dao;

	/**
	 * 分页查询
	 * @param statementName 查询操作名
	 * @param countName 查询总数量操作
	 * @param parameterObject 参数对象
	 * @param page 分页PageBean
	 * @return List结果集
	 */
	public final <E> List<E> query(String statementName, String countName, E parameterObject, PageBean page) {
		// 获得开始条数
		int skipResults = (page.getCurrentPage() - 1) * page.getPageSize();
		// 获得总共返回条数
		int maxResults = page.getPageSize();
		// 设置总数量
		page.setTotalSize(Conversion.toInt(dao.get(countName, parameterObject)));
		// 返回查询结果
		return dao.query(statementName, parameterObject, skipResults, maxResults);
	}

	/**
	 * 获得IBatisDao
	 * @return IBatisDao
	 */
	public BasicIBatisDao getDao() {
		return dao;
	}

	/**
	 * 设置IBatisDao
	 * @param dao IBatisDao
	 */
	public void setDao(BasicIBatisDao dao) {
		this.dao = dao;
	}

}
